package com.itcanteen.medical.patient.mapper;

import com.itcanteen.medical.patient.entity.Patient;
import com.itcanteen.medical.patient.util.MyMapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;

/**
 * 患者 持久层
 * @author 1804A-TeamOne
 * @date 2020-12-17 16:00
 */
public interface PatientMapper extends MyMapper<Patient> {

    /**
     * 更新密码
     * @param id 患者id
     * @param newPassword 新密码
     * @param updateTime 修改时间
     */
    void updatePassword(@Param(value = "id") Integer id, @Param(value = "password") String newPassword,
                           @Param(value = "updateTime") Date updateTime);

    /**
     * 根据用户名查询患者
     * @param username 用户名
     * @return com.itcanteen.medical.patient.entity.Patient
     */
    Patient selectByUsername (String username);

    /**
     * 根据手机号查询患者
     * @param phone 手机号
     * @return com.itcanteen.medical.patient.entity.Patient
     */
    Patient selectByPhone (Long phone);

    /**
     * 根据邮箱查询患者
     * @param email 邮箱
     * @return com.itcanteen.medical.patient.entity.Patient
     */
    Patient selectByEmail (String email);

    /**
     * 修改绑定手机号
     * @param id 患者id
     * @param phone 手机号
     * @param updateTime 修改时间
     */
    void updatePhone(@Param(value = "id") Integer id, @Param(value = "phone") Long phone,
                     @Param(value = "updateTime") Date updateTime);

    /**
     * 修改绑定邮箱
     * @param id 患者id
     * @param email 邮箱
     * @param updateTime 修改时间
     */
    void updateEmail(@Param(value = "id") Integer id, @Param(value = "email") String email,
                     @Param(value = "updateTime") Date updateTime);

    /**
     * 修改积分
     * @param id 患者id
     * @param integral 积分
     * @param updateTime 修改时间
     */
    void updateIntegral(@Param(value = "id") Integer id, @Param(value = "integral") Integer integral,
                        @Param(value = "updateTime") Date updateTime);

    /**
     * 修改患者头像
     * @param id 当前登录患者id
     * @param headImages 头像url
     */
    void changeAvatar(@Param(value = "id") Integer id, @Param(value = "headImages") String headImages);

    /**
     * 修改余额
     * @param id 患者id
     * @param payMoney 支付金额
     * @return int
     */
    int updatePatientBalance(@Param("id") int id, @Param("payMoney") Double payMoney);
}
